package cn.design.realize;


import java.util.List;

/**
 * @author dlq
 * @description
 *      具体迭代器（ConcreteIterator）：此角色实现了Iterator接口，并保持迭代过程中的游标位置
 * @date 2020/10/9 13:43
 * @since 1.0
 */
public class ConcreteIterator<T> implements Iterator<T>{
    /**
     * 当前索引位置，初始位置为 0
     */
    private int index ;
    /**
     * 集合的 容量
     */
    private int size;

    /**
     * 集合
     * 集合
     */
    private Aggregate aggregate;

    public ConcreteIterator(ConcreteAggregate aggregate){
        this.aggregate = aggregate;
        this.size = aggregate.size();
        //设置初始值为0
        this.index = 0;
    }

    @Override
    public boolean hasNext() {
        if (index >= size){return false;}
        return true;
    }

    @Override
    public T next() {
        if (index < size){
            try {
                return (T) aggregate.get(index);
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                index ++;
            }
        }
        return null;
    }

    @Override
    public T first() {
        return (T) aggregate.get(0);
    }
}
